# Generated by Django 2.0.9 on 2018-11-21 04:42

import django.contrib.postgres.fields.jsonb
from django.db import migrations
import siriuso.models.postgres
import siriuso.utils.modules


def sync_lingvo(apps, schema_editor):
    """
    Синхронизирует текстовые записи на всех языках с новыми JSON полями
    """
    sync_list = [
        ('InformilojLando', 'InformilojLandoNomo', 'nomo'),
        ('InformilojRegiono', 'InformilojRegionoNomo', 'nomo'),
        ('InformilojAstroTipo', 'InformilojAstroTipoNomo', 'nomo'),
        ('InformilojAstro', 'InformilojAstroNomo', 'nomo'),
        ('InformilojMakroregionoTeknokomo', 'InformilojMakroregionoTeknokomoNomo', 'nomo'),
        ('InformilojMezoregionoTeknokomo', 'InformilojMezoregionoTeknokomoNomo', 'nomo'),
        ('InformilojRegionoTeknokomo', 'InformilojRegionoTeknokomoNomo', 'nomo'),
        ('InformilojDistrikto', 'InformilojDistriktoNomo', 'nomo'),
        ('InformilojLokoTipo', 'InformilojLokoTipoNomo', 'nomo'),
        ('InformilojLoko', 'InformilojLokoNomo', 'nomo'),
        ('InformilojArondismentoTipo', 'InformilojArondismentoTipoNomo', 'nomo'),
        ('InformilojArondismento', 'InformilojArondismentoNomo', 'nomo'),
        ('InformilojFamiliaStato', 'InformilojFamiliaStatoNomo', 'nomo'),
        ('InformilojLaboraroloTipo', 'InformilojLaboraroloTipoNomo', 'nomo'),
        ('InformilojLaborarolo', 'InformilojLaboraroloNomo', 'nomo'),
        ('InformilojSciigoTipo', 'InformilojSciigoTipoNomo', 'nomo'),
    ]

    for kom_model, lingvo_model, posedanto_kampo in sync_list:
        # Для всех записей сообщества
        for kom in apps.get_model('informiloj', kom_model).objects.all():
            enhavo = {
                'enhavo': [],
                'lingvo': {},
                'chefa_varianto': None
            }
            # Для всех языковых вариантов
            lingvoj = apps.get_model('informiloj', lingvo_model).objects.filter(posedanto=kom)

            for lingvo in lingvoj:
                enhavo['lingvo'][lingvo.lingvo.kodo] = len(enhavo['enhavo'])
                enhavo['enhavo'].append(lingvo.enhavo)

                if lingvo.chefa_varianto or lingvoj.count() == 1:
                    enhavo['chefa_varianto'] = lingvo.lingvo.kodo

            setattr(kom, posedanto_kampo, enhavo)
            kom.save()


class Migration(migrations.Migration):

    dependencies = [
        ('informiloj', '0008_auto_20180408_1246'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='informilojarondismento',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojarondismentotipo',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojastro',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojastrotipo',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojdistrikto',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojfamiliastato',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojlaborarolo',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojlaborarolotipo',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojlando',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojloko',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojlokotipo',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojmakroregionoteknokomo',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojmezoregionoteknokomo',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojregiono',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojregionoteknokomo',
            name='nomo',
        ),
        migrations.RemoveField(
            model_name='informilojsciigotipo',
            name='nomo',
        ),
        migrations.AddField(
            model_name='informilojarondismento',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojarondismentotipo',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojastro',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojastrotipo',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojdistrikto',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojfamiliastato',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojlaborarolo',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojlaborarolotipo',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojlando',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojloko',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojlokotipo',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojmakroregionoteknokomo',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojmezoregionoteknokomo',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojregiono',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojregionoteknokomo',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.AddField(
            model_name='informilojsciigotipo',
            name='nomo',
            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=siriuso.utils.modules.default_lingvo, encoder=siriuso.models.postgres.CallableEncoder, verbose_name='Nomo'),
        ),
        migrations.RunPython(sync_lingvo),
    ]
